#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <stdint.h>

#include <cmocka.h>


// add mock 函数
int add(int a, int b)
{
    return (int)mock();
}

// 要测试的处理函数. 返回(ax2)^2
// 函数需要调用函数接口add。但是我们没有该文件代码，只能通过mock实现。
int processing(int a)
{
    int i;
    i = add(a, a);
    i = i*i;
    return i;
}

// 测试函数
static void test_prossing(void **state)
{
    int a = 10;
    will_return(add, a+a); // 我们期望add返回 a*2
    assert_int_equal(processing(a), (a+a)*(a+a)); //测试processing函数的返回值。
}


int main(int argc, char const *argv[])
{
    const struct CMUnitTest tests[] = {
        cmocka_unit_test(test_prossing),
    };

    return cmocka_run_group_tests(tests, NULL, NULL);
}

